/*  注意：每个底栏tabbar页面里，这个自定义tabbar组件都是独立的。
    文档：https://developers.weixin.qq.com/miniprogram/dev/framework/ability/custom-tabbar.html
    每个 tab 页下的自定义 tabBar 组件实例是不同的。可通过自定义组件下的 getTabBar 接口，获取当前页面的自定义 tabBar 组件实例。
    意思解析：
    微信会为每个 tab 页的里注入该自定义tabbar组件，效果类似在页面组件(比如首页)的index.json里写：
    {
        "usingComponents": {
            "custom-tab-bar": "/custom-tab-bar/index"
        }
    }
    然后index.wxml里引入<custom-tab-bar />，因此每个 tab 页下的自定义 tabBar 组件实例是不同的。
*/
const {
  TABBAR_HOME,
  TABBAR_TASK_HALL,
  TABBAR_CUSTOMER_TASK,
  TABBAR_ORDER,
  TABBAR_MINE,
  TABBAR_HOME_2,
  originTabBarList,
} = require("./tabBarData");
const { LTenantTypeDict } = require("@/shared/dict");

const app = getApp();

Component({
  data: {
    activeTab: TABBAR_HOME.name,
    color: "#999",
    selectedColor: "#409EFF",
    borderStyle: "white",
    backgroundColor: "#fff",
    tabBarList: app.globalData.tabBarList,
  },
  lifetimes: {
    // 在组件实例进入页面节点树时执行，只执行一次
    attached() {
      console.log("自定义tabbar--attached");
    },
  },
  // 在这个自定义tabbar组件里，pageLifetime是无效的！
  pageLifetime: {
    show() {
      console.log("自定义tabbar--show");
    },
  },
  observers: {
    activeTab: function (newVal) {
      //   console.log("selected改变了", newVal);
      //   console.log("this.data.tabBarList", this.data.tabBarList);
    },
    tabBarList: function (newVal) {
      //   console.log("list改变了", newVal);
    },
    // 无法监控全局数据对象globalData的。
    "globalData.loadIndexData": function (newVal) {
      //   console.log("globalData改变了", newVal);
    },
  },
  methods: {
    switchTab(e) {
      console.log("自定义组件里--switchTab", e);
      const data = e.currentTarget.dataset;
      const url = data.path;
      wx.switchTab({ url });
      this.setData({
        activeTab: data.name,
      });
    },
    // 更新底部栏tab
    updateTabBarList(tabBarList) {
      console.log("自定义tabbar--updateTabBarList");
      // 目前，底栏tabbar会根据登录信息-主体(即租户类型)来决定，可从缓存中获取“租户类型”
      if (tabBarList) {
        app.globalData.tabBarList = tabBarList;
      } else {
        app.globalData.tabBarList = [
          TABBAR_HOME,
          LTenantTypeDict.isCarrier(wx.getStorageSync("tenantType"))
            ? TABBAR_TASK_HALL
            : TABBAR_CUSTOMER_TASK,
          TABBAR_ORDER,
          TABBAR_MINE,
        //   TABBAR_HOME_2,
        ];
      }

      this.setData({
        tabBarList: app.globalData.tabBarList,
      });
    },
  },
});
